<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../vue.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.3/TweenMax.min.js"></script>
</head>

<body>
    <div id="app">
        <input v-model.number="number" type="number" step="20">
        <p>{{ animatedNumber }}</p>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                number: 0,
                tweenedNumber: 0
            },
            computed: {
                animatedNumber: function() {
                    return this.tweenedNumber;
                }
            },
            watch: {
                number: function(newValue) {
                    TweenLite.to(this.$data, 0.5, {
                        tweenedNumber: newValue
                    });
                }
            }
        })
    </script>
</body>

</html>